import dayjs from 'dayjs'

import relativeTime from 'dayjs/plugin/relativeTime'
import 'dayjs/locale/zh-cn'

dayjs.locale('zh-cn')
dayjs.extend(relativeTime)

export class TimeUtil {
    static LAST_7_DAYS = [dayjs().subtract(7, 'day').format('YYYY-MM-DD'), dayjs().subtract(1, 'day').format('YYYY-MM-DD')]

    static LAST_30_DAYS =  [dayjs().subtract(1, 'month').format('YYYY-MM-DD'), dayjs().format('YYYY-MM-DD')]
    static diffMonth = date => dayjs().diff(date, 'month', false)

    static getNowTime = () => dayjs().format('YYYY-MM-DD HH:mm:ss')

    /*
     * @param time 为设定的总时间 单位毫秒秒
     * @interval 为每秒执行的操作的回调方法 ，
     * @timeout 为时间结束后执行的操作
     * 调用示例 createTimer(time,timeStart=>{ let text = `重新发送(${(time- timeStart)/1000}s)` },()=>{   let text = `重新发送` }
     * */

    static countdown = (duration: number, interval: any, lastThen: any) => {
        let hasStartTime = 0
        interval(hasStartTime)
        const runner = setInterval(() => {
            hasStartTime += 1000
            interval(hasStartTime)
        }, 1000)
        setTimeout(() => {
            clearInterval(runner)
            lastThen()
        }, duration)
    }

    static getTimeName = (): string => {
        const hour = new Date().getHours()
        return hour < 6 ? '晚上' : hour < 8 ? '早上' : hour <= 11 ? '上午' : hour <= 13 ? '中午' : hour < 18 ? '下午' : '晚上'
    }

    static timeDifference = (time: dayjs.ConfigType): string => {
        return dayjs(time).fromNow()
    }

    /**
     * 预设时段选择组 今天、最近3天 最近1周 最近1月
     * */
    static presets = [
        {
            label: '今天', value: [dayjs(), dayjs()]
        },

        {
            label: '本周', value: [dayjs().startOf('week'), dayjs().endOf('week')]
        },
        {
            label: '本月', value: [dayjs().startOf('month'), dayjs().endOf('month')]
        },

        {
            label: '近三天', value: [dayjs().subtract(2, 'day'), dayjs()]
        },

        {
            label: '近一周', value: [dayjs().subtract(6, 'day'), dayjs()]
        },

        {
            label: '近一月', value: [dayjs().subtract(1, 'month'), dayjs()],
        },

    ]



}
